#pragma once

#include "ScriptCompiler/FrameOperation/FrameOperation.h"
#include "ScriptRuntime/Type/ConstantValue.h"
#include "ScriptCompiler/Description/DecoratedTypeDescription.h"

class CTypeDescription;

class CLoadLiteralOperation : public IFrameOperation
{
public:
    
    CLoadLiteralOperation(const CConstantValue& Value
        ,std::shared_ptr<CTypeDescription> TypeDescription
    );

    virtual EFrameOperationType GetType() const override
    {
        return EFrameOperationType::LoadLiteral;
    }

    CConstantValue Value;

    SDecoratedTypeDescription GetLiterialType()
    {
        return Type;
    }

private:
    SDecoratedTypeDescription Type;

};